home *** CD-ROM | disk | FTP | other *** search
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % two colume output from TUGboat
- % vol. 6, No. 1 (1985) by Craig Platt
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
- \newif\iftitle %true if this is a titlepage
- \global\titlefalse
-
-
- \def\titlepage{\global\titletrue}
-
- \def\onepageout#1{\shipout\vbox{%
- \offinterlineskip%
- \vbox to 3pc{%
- \iftitle \global\titlefalse%
- \else\ifodd\pageno\rightheadline\else\leftheadline\fi\fi \vfill}%
- \vbox to \vsize{#1%
- \ifvoid\footins\else%
- \vskip\skip\footins \kern-3pt%
- % \hrule height\ruleht width\hsize \kern-\ruleht \kern3pt%
- \unvbox\footins\fi%
- \boxmaxdepth=\maxdepth}}%
- \advancepageno}
-
- \newdimen\colwidth \newdimen\bigcolheight %%%1
- \colwidth=13pc \bigcolheight=98pc %%%2
-
- \output{\onepageout{\unvbox225}}
-
- \newbox\partialpage
- \newdimen\savesize %%%3
-
- \def\begindoublecolumns{\begingroup
- \savesize=\vsize %%%4
- \output={\global\setbox\partialpage=\vbox{\unvbox255}}\eject
- \output={\doublecolumnout} \hsize=\colwidth \vsize=\bigcolheight
- \advance\vsize by -2\ht\partialpage} %%%5
-
- \def\enddoublecolumns{\output={\balancecolumns}\eject
- \global\output={\onepageout{\unvbox255}} %%%6
- \global\vsize=\savesize %%%7
- \endgroup \pagegoal=\vsize}
-
- \def\doublecolumnout{\dimen0=\pageheight
- \advance\dimen0 by-\ht\partialpage \splittopskip=\topskip
- \setbox0=\vsplit255 to\dimen0
- \setbox2=\vsplit255 to\dimen0
- \onepageout\pagesofar
- \global\vsize=\bigcolheight %%%8
- \unvbox255 \penalty\outputpenalty}
-
- \def\pagesofar{\unvbox\partialpage
- \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
-
- \def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen0=\ht0
- \advance\dimen0 by\topskip \advance\dimen0 by-\baselineskip
- \divide\dimen0 by2 \splittopskip=\topskip
- {\vbadness=10000 \loop \global\setbox3=\copy0
- \global\setbox1=\vsplit3 to\dimen0
- \ifdim\ht3>\dimen0 \global\advance\dimen0 by1pt \repeat}
- \setbox0=\vbox to\dimen0{\unvbox1}
- \setbox2=\vbox to\dimen0{\unvbox3}
- \global\output={\balancingerror} %%%9
- \pagesofar}
-
- \newhelp\balerrhelp{Please change the page %%%10
- into one that works.} %%%11
-
- \def\balancingerror{\errhelp=\balerrhelp %%%12
- \errmessage{Page can't be balanced} %%%13
- \onepageout{\unvbox255}} %%%14
-
-